home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Windows marzen / Maxthon 2.0.4 / mx_2.0.4.5799.exe / template / _shared / js / maxXmlListParser.js < prev   
Text File  |  2007-09-20  |  3KB  |  144 lines

  1. var maxXmlListParser={};
  2. maxXmlListParser.error=null;
  3. maxXmlListParser.xmlDOM=null;
  4. maxXmlListParser.getXMLDOM=function(_1){
  5. var _2;
  6. try{
  7. if(window.ActiveXObject){
  8. _2=external.max_activex(max_security_id,"Microsoft.XMLDOM");
  9. _2.async=false;
  10. if(_1["namespace"]){
  11. _2.setProperty("SelectionNamespaces",_1["namespace"]);
  12. }
  13. }else{
  14. var ns=_1["namespace"]?_1["namespace"]:"";
  15. _2=document.implementation.createDocument(ns,"",null);
  16. }
  17. }
  18. catch(e){
  19. maxXmlListParser.error="Create XMLDOM Failed :: ("+e.number+") "+e.description;
  20. return null;
  21. }
  22. return _2;
  23. };
  24. maxXmlListParser.parseFile=function(_4,_5){
  25. return maxXmlListParser.parse(_4,_5,true);
  26. };
  27. maxXmlListParser.parse=function(_6,_7,_8){
  28. if(maxXmlListParser.load(_6,_7,_8)){
  29. return maxXmlListParser.parseItems(maxXmlListParser.xmlDOM,_7);
  30. }else{
  31. return null;
  32. }
  33. };
  34. maxXmlListParser.load=function(_9,_a,_b){
  35. if(!_b){
  36. _b=false;
  37. }
  38. if(!maxXmlListParser.xmlDOM){
  39. maxXmlListParser.xmlDOM=maxXmlListParser.getXMLDOM(_a);
  40. }
  41. if(!maxXmlListParser.xmlDOM){
  42. return false;
  43. }
  44. isOK=true;
  45. if(_b){
  46. maxXmlListParser.xmlDOM.async=false;
  47. maxXmlListParser.xmlDOM.load(_9);
  48. }else{
  49. if(window.ActiveXObject){
  50. maxXmlListParser.xmlDOM.loadXML(_9);
  51. }else{
  52. maxXmlListParser.xmlDOM=(new DOMParser()).parseFromString(_9,"text/xml");
  53. }
  54. }
  55. if(window.ActiveXObject){
  56. if(maxXmlListParser.xmlDOM.parseError.errorCode!=0){
  57. isOK=false;
  58. }
  59. }else{
  60. if(maxXmlListParser.xmlDOM.documentElement.tagName=="parsererror"){
  61. isOK=false;
  62. }
  63. }
  64. if(isOK){
  65. return true;
  66. }else{
  67. maxXmlListParser.error="Parse Error :: ("+maxXmlListParser.xmlDOM.parseError.errorCode+") "+maxXmlListParser.xmlDOM.parseError.reason;
  68. return false;
  69. }
  70. };
  71. maxXmlListParser.selectNodes=function(_c,_d,_e){
  72. if(window.ActiveXObject){
  73. if(_e){
  74. return _c.selectSingleNode(_d);
  75. }else{
  76. return _c.selectNodes(_d);
  77. }
  78. }else{
  79. var _f=new XPathEvaluator();
  80. var _10=_f.createNSResolver(_c.ownerDocument==null?_c.documentElement:_c.ownerDocument.documentElement);
  81. var _11=_f.evaluate(_d,_c,_10,0,null);
  82. var _12=[];
  83. var obj;
  84. while(obj=_11.iterateNext()){
  85. if(_e){
  86. return obj;
  87. }else{
  88. _12.push(obj);
  89. }
  90. }
  91. if(_12.length==0){
  92. return null;
  93. }else{
  94. return _12;
  95. }
  96. }
  97. };
  98. maxXmlListParser.parseItems=function(_14,_15){
  99. var _16=[];
  100. if(!maxXmlListParser.selectNodes(_14.documentElement,_15["validate"],true)){
  101. return null;
  102. }
  103. var _17=maxXmlListParser.selectNodes(_14.documentElement,_15["items"]);
  104. for(var i=0;i<_17.length;i++){
  105. var _19=maxXmlListParser.parseSingleItem(_17[i],_15);
  106. if(_19!={}){
  107. _16.push(_19);
  108. }
  109. }
  110. return _16;
  111. };
  112. maxXmlListParser.parseSingleItem=function(_1a,_1b){
  113. var _1c=_1b["itemTemplate"]?$clone(_1b["itemTemplate"]):{};
  114. for(var _1d in _1b["attributes"]){
  115. var _1e=maxXmlListParser.selectNodes(_1a,_1b["attributes"][_1d],true);
  116. if(_1e){
  117. _1c[_1d]=_1e.nodeValue;
  118. }
  119. }
  120. return _1c;
  121. };
  122. maxXmlListParser.updateItem=function(_1f){
  123. if(maxXmlListParser.load(_1f["xml"],{},_1f["isFile"])){
  124. maxXmlListParser.xmlDOM.setProperty("SelectionLanguage","XPath");
  125. var _20=maxXmlListParser.xmlDOM.selectSingleNode(_1f["xpath"]);
  126. if(_20){
  127. _20.nodeValue=_1f["value"];
  128. }
  129. if(_1f["save"]&&_1f["isFile"]){
  130. try{
  131. maxXmlListParser.xmlDOM.save(_1f["xml"]);
  132. }
  133. catch(e){
  134. alert(e.description);
  135. }
  136. }
  137. return true;
  138. }else{
  139. alert(maxXmlListParser.error);
  140. return false;
  141. }
  142. };
  143.  
  144.